# -*- coding: utf-8 -*-

# @author Anderson R. Livramento
# Copyright (C) 2008 Anderson Rodrigues Livramento <anderdevel@users.sourceforge.net>
#
# O conteúdo deste arquivo está disponível dentro dos termos 
# da Licença Pública Geral GNU como publicada pela 
# Fundação do Software Livre (FSF); na versão 2 da Licença, ou
# (na sua opnião) qualquer versão mais recente.
#
# Este programa é distribuído na esperança que possa ser útil,
# mas SEM NENHUMA GARANTIA; sem uma garantia implícita de ADEQUAÇÃO a
# qualquer MERCADO ou APLICAÇÃO EM PARTICULAR. Veja a
# Licença Pública Geral GNU para maiores detalhes.
#
# Você deve ter recebido uma cópia da Licença Pública Geral GNU, sob
# o título "LICENCA.txt", junto com este programa; se não, escreva para
# a Fundação do Software Livre(FSF) Inc., 51 Franklin St, Fifth Floor,
# Boston, MA  02110-1301  US
#
from sqlalchemy.schema import Table, Column, ForeignKey, ForeignKeyConstraint
from sqlalchemy.types import *
from sqlalchemy.orm import relation

class Usuario(object):
    pass

class UsuarioModel(object):
    def __init__(self,meta=None):
        self.table = Table('vtf_usuarios',meta,
            Column('nmlogin',String(25),nullable=False,primary_key=True),
            Column('desenha',String(100),nullable=False)
        )
        
    def mapping(self,Session=None):
        Session.mapper(Usuario,self.table)

class Mostra(object):
    pass

class MostraModel(object):
    def __init__(self,meta=None):
        self.table = Table('vtf_mostras',meta,
            Column('cdmostra',Integer,nullable=False,primary_key=True),
            Column('nmmostra',String(100),nullable=False)
        )
        
    def mapping(self,Session=None):
        Session.mapper(Mostra,self.table)

class Candidato(object):
    pass

class CandidatoModel(object):
    def __init__(self,meta=None):
        self.table = Table('vtf_candidatos',meta,
            Column('cdcandidato',Integer,nullable=False,primary_key=True),
            Column('idcandidato',Integer,nullable=False),
            Column('nmcandidato',String,nullable=False),
            Column('qtvotos',Integer,default=0)
        )
        
    def mapping(self,Session=None):
        Session.mapper(Candidato,self.table)

class Votacao(object):
    pass

class VotacaoModel(object):
    def __init__(self,meta=None):
        self.table = Table('vtf_votacao',meta,
            Column('cdvotacao',Integer,nullable=False,primary_key=True),
            Column('cdmostra',Integer,ForeignKey('vtf_mostras.cdmostra'),nullable=False),
            Column('dtvotacao',Date),
            Column('flativa',SmallInteger,default=0)
        )
        
    def mapping(self,Session=None):
        Session.mapper(Votacao,self.table,properties={
            'r_mostra':relation(Mostra,lazy=False),
            'r_candidatos':relation(VotacaoCandidato)})

class VotacaoCandidato(object):
    pass

class VotacaoCandidatoModel(object):
    def __init__(self,meta=None):
        self.table = Table('vtf_votacao_candidatos',meta,
            Column('cdvotacao',Integer,ForeignKey('vtf_votacao.cdvotacao'),nullable=False,primary_key=True),
            Column('cdcandidato',Integer,ForeignKey('vtf_candidatos.cdcandidato'),nullable=False,primary_key=True),
        )
        
    def mapping(self,Session=None):
        Session.mapper(VotacaoCandidato,self.table,properties={
            'r_candidato':relation(Candidato,lazy=False)})